package com.itheima.dubbo.web;

import com.itheima.dubbo.UserInterface;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

    /*    dubbo可以配置超时时间：
    在controll中，远程调用服务注解@DubboReference(timeout = 1000)中可配置；
    也可以在serviceimpl实现接口中，@DubboService(timeout=2000)中配置。

    如果在controller层【消费方】和service实现层impl【生产方】中同时配置了超时时间，优先的是dubbo消费者
    也就是说如果生产方和消费方同时配置了相同的配置，以消费方controller为准。
    */

    //    @DubboReference(timeout = 1000)//也可以配置超时时间
    @DubboReference//远程调用服务  即订阅服务从注册中心
            //TODO 注意这里要到yml配置文件中
            // 配置cloud: subscribed-services: dubbo-producer  要订阅的服务名称,写了谁就订阅谁
//            订阅的服务名称要和nacos中服务详情中的 服务名称一样  多个用逗号隔开
//            如果不配置则默认配置所有
            UserInterface userInterface;

    /**
     * @Author yuyongxiang
     * @CreateTime 2022/6/12 10:46
     * @Description http://localhost:8081/user/hello?username=你好
     */
    @GetMapping("/hello")
    public String yyx(String username) {
        System.out.println("Controller 执行了。。。。。。。。。。。。。。");
        return userInterface.yyx(username);
    }

    @GetMapping("/age")
    public void hello(int age) {
        System.out.println(age + " 年龄 >>>>>>>>");
        userInterface.Hello(age);
    }
}
